ASP.NET Core অ্যাপ্লিকেশনে ফর্ম তৈরি এবং ডেটা ভ্যালিডেশন গুরুত্বপূর্ণ অংশ। এই ফিচারটি ইউজার ইনপুট যাচাই করে, যাতে সঠিক ডেটা সার্ভারে পাঠানো হয় এবং অকার্যকর বা অযাচিত ডেটা এড়ানো যায়। ভ্যালিডেশন দুটি পদ্ধতিতে করা যায়— Server-side Validation এবং Client-side Validation।
ASP.NET Core অ্যাপ্লিকেশনগুলিতে ফর্ম তৈরি করার জন্য সাধারণত Razor Views ব্যবহার করা হয়। ফর্ম ব্যবহারকারীর ইনপুট সংগ্রহ করতে সাহায্য করে, যা পরে সার্ভারে পাঠানো হয়। Razor ভিউতে HTML ফর্ম তৈরি করার জন্য Tag Helpers ব্যবহার করা হয়।
একটি সাধারণ ফর্ম তৈরি করা:
<form asp-action="Create" method="post">
<div class="form-group">
<label for="Name">Name</label>
<input type="text" class="form-control" id="Name" name="Name" />
</div>
<div class="form-group">
<label for="Email">Email</label>
<input type="email" class="form-control" id="Email" name="Email" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
এখানে asp-action
অ্যাট্রিবিউট ব্যবহার করা হয়েছে, যা Razor Tag Helper এর মাধ্যমে কন্ট্রোলারের নির্দিষ্ট একশন পদ্ধতির সাথে ফর্ম সাবমিট করে।
Model Binding এর মাধ্যমে ফর্মের ডেটা ক্লাসের প্রপার্টিতে মেলানো হয়। এরপর Data Annotations ব্যবহার করে ফর্মের ইনপুটের জন্য ভ্যালিডেশন অ্যাট্রিবিউট প্রযোজ্য করা হয়। এই অ্যাট্রিবিউটগুলো ফর্মের ডেটার ইনপুট ভ্যালিডিটি পরীক্ষা করতে সাহায্য করে।
একটি মডেল ক্লাসের উদাহরণ:
public class UserModel
{
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Email is required")]
[EmailAddress(ErrorMessage = "Invalid email format")]
public string Email { get; set; }
}
এখানে Required
অ্যাট্রিবিউট ইনপুট ফিল্ডে ডেটা থাকা আবশ্যক তা নিশ্চিত করে এবং EmailAddress
অ্যাট্রিবিউট ইমেইল ইনপুটের ফরম্যাট যাচাই করে।
Custom Validation ব্যবহার করে কাস্টম লজিক প্রয়োগ করা যায়। যেমন, যদি নির্দিষ্ট শর্ত পূরণ না হয় তবে একটি কাস্টম ভ্যালিডেশন তৈরি করা যেতে পারে:
public class CustomEmailDomainAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var email = value as string;
if (email != null && email.EndsWith("@example.com"))
{
return true;
}
return false;
}
}
এই কাস্টম ভ্যালিডেশনটি শুধুমাত্র নির্দিষ্ট ডোমেইন (এখানে @example.com
) এর ইমেইল গ্রহণ করবে।
Client-Side Validation হল JavaScript ভিত্তিক ভ্যালিডেশন যা ইউজারের ইনপুট যাচাই করে, সার্ভারে পাঠানোর আগে ভুল ডেটা আটকায়। ASP.NET Core সঠিকভাবে ক্লায়েন্ট-সাইড ভ্যালিডেশন চালানোর জন্য jQuery Validation এবং Unobtrusive Validation ব্যবহার করে।
JavaScript ভ্যালিডেশন উদাহরণ:
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.19.3/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate.unobtrusive/3.2.7/jquery.validate.unobtrusive.min.js"></script>
এই স্ক্রিপ্টগুলো ফর্মের ইনপুট ডেটা যাচাই করতে সাহায্য করবে।
ASP.NET Core ফর্মে Anti-forgery Tokens ব্যবহার করে Cross-Site Request Forgery (CSRF) আক্রমণ প্রতিরোধ করা হয়। Anti-forgery টোকেন ব্যবহার করে নিশ্চিত করা হয় যে, ফর্মটি একটি বৈধ রিকোয়েস্ট থেকে এসেছে এবং কোনো তৃতীয় পক্ষের হালকা পরিবর্তন করা সম্ভব নয়।
Anti-forgery টোকেনের উদাহরণ:
<form asp-action="Create" method="post">
@Html.AntiForgeryToken()
<div class="form-group">
<label for="Name">Name</label>
<input type="text" class="form-control" id="Name" name="Name" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
এবং কন্ট্রোলারে এটি যাচাই করা হয়:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(UserModel model)
{
if (ModelState.IsValid)
{
// Process data
return RedirectToAction("Index");
}
return View(model);
}
এটি ফর্মের নিরাপত্তা নিশ্চিত করে এবং কোনো অবৈধ অনুরোধ প্রতিরোধ করে।
ASP.NET Core-এ ফর্ম এবং ডেটা ভ্যালিডেশন ইউজারের ইনপুট যাচাই করতে এবং সঠিক ডেটা সার্ভারে পাঠানোর জন্য অত্যন্ত গুরুত্বপূর্ণ। Model Binding এবং Data Annotations দ্বারা সহজেই ভ্যালিডেশন করা যায়, পাশাপাশি Custom Validation এবং Client-side Validation এর মাধ্যমে আরও কাস্টম লজিক প্রয়োগ করা যায়। নিরাপত্তা নিশ্চিত করতে Anti-forgery Tokens ব্যবহার করা হয়, যা CSRF আক্রমণ প্রতিরোধে সাহায্য করে।
ASP.NET Core অ্যাপ্লিকেশনে ফর্ম তৈরি করা এবং ডেটা সাবমিট করা একটি সাধারণ ওয়েব ডেভেলপমেন্ট কাজ। ফর্মের মাধ্যমে ইউজার ইনপুট গ্রহণ করা হয় এবং তা সার্ভারে প্রক্রিয়া করার জন্য পাঠানো হয়। সাধারণত, ফর্মের মাধ্যমে ব্যবহারকারীর নাম, ইমেইল, পাসওয়ার্ড ইত্যাদি সংগ্রহ করা হয়।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে ASP.NET Core MVC বা Razor Pages অ্যাপ্লিকেশন তৈরি করে ফর্ম তৈরি এবং ডেটা সাবমিট করা যায়।
ASP.NET Core MVC বা Razor Pages এ ফর্ম তৈরি করার জন্য সাধারণত HTML
ফর্ম উপাদান ব্যবহার করা হয়। সাধারণ ফর্মে ইনপুট ফিল্ড যেমন TextBox
, DropDownList
, RadioButton
, CheckBox
ইত্যাদি থাকতে পারে। এছাড়া, ফর্মটি সাবমিট করার জন্য একটি submit
বাটন ব্যবহার করা হয়।
MVC Example:
public class ContactModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Message { get; set; }
}
View
ফাইলে ফর্ম তৈরি করুন। এখানে Razor সিনট্যাক্স ব্যবহার করা হবে।@model YourApp.Models.ContactModel
<form asp-action="SubmitContact" method="post">
<div>
<label for="Name">Name:</label>
<input type="text" id="Name" name="Name" />
</div>
<div>
<label for="Email">Email:</label>
<input type="email" id="Email" name="Email" />
</div>
<div>
<label for="Message">Message:</label>
<textarea id="Message" name="Message"></textarea>
</div>
<button type="submit">Submit</button>
</form>
এই ফর্মে একটি Name
, Email
এবং Message
ইনপুট ফিল্ড রয়েছে। asp-action="SubmitContact"
অ্যাট্রিবিউটটি নির্দেশ করে যে ফর্মটি SubmitContact
একশন মেথডে সাবমিট হবে।
ফর্মটি সাবমিট করার জন্য, Controller
তে একটি একশন মেথড তৈরি করতে হবে যাতে ফর্ম থেকে পাঠানো ডেটা প্রসেস করা যায়। এখানে, HTTP POST রিকোয়েস্টের মাধ্যমে ফর্মের ডেটা সাবমিট করা হবে।
ContactController
নামে একটি কন্ট্রোলার তৈরি করে ফর্মের ডেটা গ্রহণ এবং প্রক্রিয়া করার জন্য একশন মেথড তৈরি করুন।using Microsoft.AspNetCore.Mvc;
using YourApp.Models;
public class ContactController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult SubmitContact(ContactModel model)
{
if (ModelState.IsValid)
{
// ডেটা প্রক্রিয়া করা (যেমন, ডেটাবেসে সংরক্ষণ বা ইমেইল পাঠানো)
// এখানে আপনি ডেটার সাথে কাজ করতে পারেন
TempData["SuccessMessage"] = "Your message has been sent successfully!";
return RedirectToAction("Index");
}
// যদি মডেল ইনভ্যালিড হয়, তাহলে আবার ফর্ম দেখানো হবে
return View("Index", model);
}
}
এখানে, SubmitContact
মেথড ContactModel
ডেটা মডেলকে গ্রহণ করবে। ModelState.IsValid
চেক করে নিশ্চিত হবে যে ফর্মে কোন ভুল নেই। যদি ফর্মে সবকিছু ঠিক থাকে, তাহলে ফর্মের ডেটা প্রসেস করা হবে (যেমন, ডেটাবেসে সেভ করা বা ইমেইল পাঠানো)। যদি মডেল ভ্যালিড না হয়, তবে আবার ফর্ম দেখানো হবে।
ASP.NET Core MVC তে Model Binding ব্যবহার করে ফর্মের ইনপুট ডেটা সরাসরি মডেল প্রপার্টিতে পাঠানো হয়। মডেল বাউন্ড ডেটা শুদ্ধভাবে ফর্মে ফিরে আসে, এবং আপনি এই ডেটা ভ্যালিডেশনের জন্য Validation Attributes ব্যবহার করতে পারেন।
Example of Validation Attributes:
public class ContactModel
{
[Required(ErrorMessage = "Name is required.")]
public string Name { get; set; }
[Required(ErrorMessage = "Email is required.")]
[EmailAddress(ErrorMessage = "Please enter a valid email address.")]
public string Email { get; set; }
[Required(ErrorMessage = "Message is required.")]
public string Message { get; set; }
}
এখানে, Required
এবং EmailAddress
অ্যাট্রিবিউট ফর্ম ইনপুটে যাচাই করবে যে ইউজার ফিল্ডগুলি সঠিকভাবে পূর্ণ করেছে। যদি ফিল্ডটি খালি থাকে অথবা ইমেইল সঠিক না হয়, তাহলে একটি এরর মেসেজ প্রদর্শিত হবে।
ASP.NET Core MVC ফর্মের জন্য কাস্টম ভ্যালিডেশন তৈরি করা যেতে পারে, যা ব্যবহারকারীকে নির্দিষ্ট শর্তে ডেটা সাবমিট করতে বাধ্য করে। এছাড়া, ক্লায়েন্ট সাইড ভ্যালিডেশন সক্ষম করার জন্য JavaScript ব্যবহার করতে পারেন।
Client-Side Validation:
ASP.NET Core MVC সরাসরি ক্লায়েন্ট সাইড ভ্যালিডেশন সমর্থন করে। এটি jquery.validate.js
এবং jquery.validate.unobtrusive.js
স্ক্রিপ্ট ফাইল ব্যবহার করে কাজ করে। এই স্ক্রিপ্ট ফাইলগুলো প্রজেক্টে যুক্ত করলে ফর্ম সাবমিট করার আগে ফর্মের ডেটা চেক করা হবে।
আপনার _Layout.cshtml
ফাইলে এই স্ক্রিপ্টগুলো যোগ করুন:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
এই স্ক্রিপ্টগুলি স্বয়ংক্রিয়ভাবে ক্লায়েন্ট সাইডে ভ্যালিডেশন চালায় এবং ইউজারকে ইনপুট ত্রুটির জন্য সতর্ক করে।
ASP.NET Core অ্যাপ্লিকেশনে ফর্ম তৈরি এবং ডেটা সাবমিট করা একটি সাধারণ কিন্তু গুরুত্বপূর্ণ কার্যক্রম। আপনি MVC বা Razor Pages ব্যবহার করে সহজে ফর্ম তৈরি করতে পারেন এবং ব্যবহারকারীর ইনপুট সংগ্রহ করতে পারেন। ফর্ম সাবমিট করার পর, ডেটা প্রসেস করা, মডেল বাউন্ডিং এবং ভ্যালিডেশন অটোমেটিকভাবে সম্পন্ন হয়। এতে ফর্মের ইনপুট সঠিক কিনা তা যাচাই করা এবং সাবমিটের পরে প্রয়োজনীয় পদক্ষেপ নেওয়া যায়।
ASP.NET Core MVC বা Razor Pages অ্যাপ্লিকেশনে Model Binding এবং Validation Attributes দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা ডেটা গ্রহণ এবং সঠিকতা নিশ্চিত করার জন্য ব্যবহৃত হয়। Model Binding ব্যবহৃত হয় ইউজার ইনপুট থেকে ডেটা মডেলে ম্যাপ করার জন্য, আর Validation Attributes ব্যবহার করে ইনপুট ডেটার বৈধতা পরীক্ষা করা হয়।
Model Binding হল একটি প্রক্রিয়া যার মাধ্যমে ASP.NET Core একটি HTTP রিকোয়েস্টের ডেটা (যেমন ফর্ম ডেটা, URL প্যারামিটার, কুकी, অথবা কুয়েরি স্ট্রিং) একটি মডেল ক্লাসে পরিবর্তন করে। যখন একটি ফর্ম সাবমিট করা হয় বা একটি API রিকোয়েস্ট আসে, তখন ASP.NET Core স্বয়ংক্রিয়ভাবে সেই ইনপুট ডেটা আপনার মডেলে (Model) ম্যাপ করে দেয়।
উদাহরণস্বরূপ, যদি আপনি একটি পণ্য তৈরি করতে চান এবং ইউজার ফর্মে নাম, দাম, এবং বিবরণ প্রদান করেন, তাহলে সেই ইনপুট ডেটাকে মডেলে ম্যাপ করা হয়। নিচে একটি উদাহরণ দেওয়া হল:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public string Description { get; set; }
}
এখন, ফর্মে ইউজারের ইনপুট হিসাবে এই ডেটা পাঠানো হলে, ASP.NET Core এই ডেটাকে Product মডেলে বদলে দেয়। উদাহরণ:
public class ProductController : Controller
{
[HttpPost]
public IActionResult Create(Product product)
{
// Model Binding দ্বারা 'product' ভেরিয়েবলটি পূর্ণ হয়ে যাবে
// এখানে আপনি product.Name, product.Price ইত্যাদি অ্যাক্সেস করতে পারবেন
if (ModelState.IsValid)
{
// ডেটা সেভ করা হবে
}
return View();
}
}
এখানে, Model Binding প্রক্রিয়ায় Product মডেলটি স্বয়ংক্রিয়ভাবে ফর্ম ডেটা থেকে পূর্ণ হয়ে যাবে এবং আপনি product.Name, product.Price ইত্যাদি অ্যাক্সেস করতে পারবেন।
Validation Attributes হল এক ধরনের ডেটা যাচাই পদ্ধতি, যা মডেল ক্লাসে যুক্ত করা হয়। এগুলি ইউজারের ইনপুট ডেটার বৈধতা পরীক্ষা করে এবং যাচাই করে যে সেই ডেটা সঠিক কি না। ASP.NET Core এই বৈধতা পরীক্ষা করার জন্য Data Annotations ব্যবহার করে, যা খুব সহজেই মডেল ক্লাসে যুক্ত করা যায়।
বিভিন্ন ধরনের Validation Attributes এর মধ্যে কয়েকটি হল:
উদাহরণ:
public class Product
{
[Required(ErrorMessage = "পণ্যের নাম বাধ্যতামূলক")]
public string Name { get; set; }
[Range(1, 10000, ErrorMessage = "মূল্য অবশ্যই ১ থেকে ১০,০০০ এর মধ্যে হতে হবে")]
public decimal Price { get; set; }
[StringLength(500, ErrorMessage = "বিবরণ ৫০০ ক্যারেক্টারের মধ্যে হতে হবে")]
public string Description { get; set; }
}
এখানে, [Required], [Range], এবং [StringLength] অ্যাট্রিবিউটগুলি ইনপুট ডেটা যাচাই করতে ব্যবহৃত হচ্ছে।
যখন একটি ফর্ম সাবমিট করা হয়, তখন Model Binding এবং Validation Attributes একসাথে কাজ করে। ASP.NET Core স্বয়ংক্রিয়ভাবে মডেলটি পূর্ণ করে এবং ModelState.IsValid চেক করে দেখবে যে, সমস্ত বৈধতা পরীক্ষা পাশ হয়েছে কিনা।
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
// ডেটা সঠিক হলে, ডেটা সেভ করুন
// ডেটা সেভ করার প্রক্রিয়া
return RedirectToAction("Success");
}
else
{
// ডেটা সঠিক না হলে, ব্যবহারকারীকে ফেরত পাঠান
return View(product);
}
}
এখানে, ModelState.IsValid চেক করে, যদি কোনো ভুল থাকে (যেমন কোন ফিল্ড ফাঁকা বা সীমানার বাইরে ডেটা) তাহলে ফর্ম আবার প্রদর্শিত হবে এবং ব্যবহারকারীকে ভুল তথ্য জানানো হবে।
যদি আপনি কোনো বিশেষ ধরনের বৈধতা যাচাই করতে চান, যেমন পাসওয়ার্ডের শক্তি, তাহলে Custom Validation ব্যবহার করতে পারেন। এটি IValidatableObject ইন্টারফেস ইমপ্লিমেন্ট করে করা যায়।
public class Product : IValidatableObject
{
public string Name { get; set; }
public decimal Price { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Price < 1)
{
yield return new ValidationResult("মূল্য অবশ্যই ১ বা তার বেশি হতে হবে", new[] { "Price" });
}
}
}
এখানে, Validate মেথডে কাস্টম ভ্যালিডেশন লজিক লেখা হয়েছে, যা Price এর মান ১ এর কম হলে একটি ভুল বার্তা ফেরত দেয়।
Model Binding এবং Validation Attributes ASP.NET Core MVC অ্যাপ্লিকেশনে ডেটা প্রক্রিয়া এবং যাচাইয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। Model Binding ইউজারের ইনপুট ডেটাকে স্বয়ংক্রিয়ভাবে মডেল ক্লাসে ম্যাপ করে, এবং Validation Attributes ডেটার সঠিকতা নিশ্চিত করে। এই দুটি সুবিধা ব্যবহার করে আপনি একটি দক্ষ এবং সুরক্ষিত ফর্ম হ্যান্ডলিং সিস্টেম তৈরি করতে পারবেন।
ASP.NET Core-এ Custom Validation এবং Client-Side Validation গুরুত্বপূর্ণ ভূমিকা পালন করে ডেটা ইনপুটের সঠিকতা নিশ্চিত করতে। এই দুটি বৈশিষ্ট্য ব্যবহারকারীদের ভুল ইনপুট শনাক্ত করতে এবং সেই অনুযায়ী সঠিক রেসপন্স প্রদান করতে সাহায্য করে।
Custom Validation ব্যবহারকারীর ইনপুট যাচাই করার জন্য বিশেষ ধরনের লজিক তৈরি করার সুযোগ দেয়। যদি আপনি একটি সাধারণ Data Annotations বৈশিষ্ট্যের মাধ্যমে যাচাই করতে না পারেন, তখন কাস্টম ভ্যালিডেশন তৈরি করতে হবে।
ASP.NET Core-এ কাস্টম ভ্যালিডেশন তৈরি করতে IValidatableObject ইন্টারফেস বা Custom Validation Attributes ব্যবহার করা হয়।
public class User
{
[Required]
public string Name { get; set; }
[CustomEmailValidator]
public string Email { get; set; }
}
public class CustomEmailValidator : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var email = value as string;
if (!string.IsNullOrEmpty(email) && !email.Contains("@"))
{
return new ValidationResult("Invalid email format.");
}
return ValidationResult.Success;
}
}
এই কোডে, CustomEmailValidator
একটি কাস্টম ভ্যালিডেশন অ্যাট্রিবিউট, যা নিশ্চিত করে যে ইমেইল ঠিকভাবে ফরম্যাট করা হয়েছে। যদি তা না হয়, তবে একটি কাস্টম এরর মেসেজ দেখানো হবে।
public class User : IValidatableObject
{
public string Name { get; set; }
public string Email { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!Email.Contains("@"))
{
yield return new ValidationResult("Invalid email format.", new[] { "Email" });
}
}
}
এখানে, Validate
মেথডে কাস্টম লজিক প্রয়োগ করা হয়েছে, যেখানে ইমেইল ফরম্যাট যাচাই করা হচ্ছে।
Client-Side Validation হলো সেরকম একটি পদ্ধতি যেখানে ব্যবহারকারীর ইনপুট যাচাই করা হয় ক্লায়েন্ট সাইডে (যেমন JavaScript ব্যবহার করে) সার্ভারে পাঠানোর আগে। এটি ফর্মের দ্রুত ইনপুট যাচাইয়ের জন্য ব্যবহৃত হয়, এবং ব্যবহারকারীকে ত্রুটি মেসেজ তাড়াতাড়ি দেখানো যায়, যা সার্ভারের বোঝা কমাতে সহায়তা করে।
ASP.NET Core ফ্রেমওয়ার্কে jQuery Validation সরঞ্জাম ব্যবহার করে ক্লায়েন্ট-সাইড ভ্যালিডেশন সহজে কার্যকর করা যায়।
<form id="userForm">
<input type="text" name="email" id="email" required />
<input type="submit" value="Submit" />
</form>
$(document).ready(function() {
$('#userForm').validate({
rules: {
email: {
required: true,
email: true
}
},
messages: {
email: {
required: "Please enter your email.",
email: "Please enter a valid email address."
}
}
});
});
এখানে, validate()
মেথডটি ইমেইল ফিল্ডের জন্য ক্লায়েন্ট-সাইড ভ্যালিডেশন প্রয়োগ করেছে, যাতে শুধুমাত্র বৈধ ইমেইল প্যাটার্ন গ্রহণ করা হয়।
Custom Validation ব্যবহারকারীর নির্দিষ্ট ইনপুট যাচাই করতে কাস্টম লজিক প্রয়োগ করতে সহায়তা করে, যা ডেটা সঠিকতার জন্য অত্যন্ত গুরুত্বপূর্ণ। অপরদিকে, Client-Side Validation ব্যবহারকারীর ইনপুট দ্রুত যাচাই করতে এবং ত্রুটি বার্তা দেখাতে সহায়তা করে, সার্ভারের উপর বোঝা কমিয়ে দ্রুত ফিডব্যাক প্রদান করে। দুটোই একসাথে ব্যবহার করলে ডেটা সঠিকভাবে ইনপুট গ্রহণ এবং প্রক্রিয়াকরণের নিশ্চয়তা পাওয়া যায়।
Anti-forgery Tokens (অ্যান্টি-ফর্গারি টোকেন) হল একটি নিরাপত্তা প্রযুক্তি যা ওয়েব অ্যাপ্লিকেশনগুলিতে Cross-Site Request Forgery (CSRF) আক্রমণ প্রতিরোধ করতে ব্যবহৃত হয়। CSRF আক্রমণের মাধ্যমে একজন আক্রমণকারী ব্যবহারকারীর অধিকার নিয়ে অবৈধভাবে একটি রিকোয়েস্ট পাঠাতে পারে, যা সাইটের নিরাপত্তা লঙ্ঘন করে। Anti-forgery tokens এর মাধ্যমে এই ধরনের আক্রমণ প্রতিরোধ করা হয়, এবং এটি ব্যবহারকারীর সেশন নিরাপদ রাখে।
Anti-forgery Token একটি সিকিউরিটি টোকেন, যা একটি র্যান্ডম এবং ইউনিক স্ট্রিং হিসেবে তৈরি হয় এবং ব্যবহারকারী যখন একটি ফর্ম সাবমিট করে, তখন এটি ফর্ম ডেটার সাথে যুক্ত হয়ে পাঠানো হয়। সার্ভার এই টোকেনটি যাচাই করে নিশ্চিত করে যে রিকোয়েস্টটি আসল ব্যবহারকারীর পক্ষ থেকে এসেছে, এবং কোনো বাহ্যিক আক্রমণকারীর পক্ষ থেকে নয়।
Anti-forgery token মূলত দুইটি অংশে ভাগ করা হয়:
Cross-Site Request Forgery (CSRF) হল এমন একটি আক্রমণ, যেখানে আক্রমণকারী একটি ম্যালিশিয়াস ওয়েবসাইট বা স্ক্রিপ্টের মাধ্যমে একজন ব্যবহারকারীর ব্রাউজারে একটি অবৈধ HTTP রিকোয়েস্ট পাঠাতে পারে। এটি তখন ঘটে যখন ব্যবহারকারী একটি ওয়েবসাইটে লগিন থাকে এবং আক্রমণকারী একটি ভুয়া রিকোয়েস্ট পাঠায় যা সার্ভার গ্রহণ করে, কারণ এটি বৈধ ব্যবহারকারীর কাছ থেকে আসছে বলে মনে হয়।
উদাহরণস্বরূপ, যদি একটি ব্যবহারকারী তার ব্যাংক অ্যাকাউন্টে লগ ইন থাকে, এবং আক্রমণকারী একটি বিশেষভাবে ডিজাইন করা লিঙ্কে ক্লিক করার মাধ্যমে সেই ব্যবহারকারীর পক্ষ থেকে অর্থ স্থানান্তর করার জন্য একটি রিকোয়েস্ট পাঠায়, তবে এটি একটি CSRF আক্রমণ হতে পারে।
ASP.NET Core একটি built-in anti-forgery মেকানিজম প্রদান করে, যা CSRF আক্রমণ প্রতিরোধে সহায়তা করে। এটি সাধারণত [ValidateAntiForgeryToken] অ্যাট্রিবিউট ব্যবহার করে এবং ফর্ম সাবমিটের জন্য একটি র্যান্ডম টোকেন ব্যবহার করে। এই টোকেনটি সার্ভার এবং ক্লায়েন্টের মধ্যে একটি সিকিউর সম্পর্ক তৈরি করে, যাতে শুধুমাত্র বৈধ রিকোয়েস্টগুলি গ্রহণ করা হয়।
Token Creation: ফর্ম রেন্ডার করার সময় টোকেনটি তৈরি করা হয়। ASP.NET Core এর Razor ভিউ ইঞ্জিনে, _ValidationScriptsPartial
ফাইলটি অটোমেটিক্যালি টোকেন ইনক্লুড করে।
উদাহরণ:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken() <!-- Anti-forgery token যুক্ত করা -->
<input type="submit" value="Submit">
}
Token Validation: ফর্ম সাবমিট করার পর, সার্ভার এ টোকেনটি যাচাই করে দেখে, এটি বৈধ কিনা। যদি টোকেনটি ভুল বা অনুপস্থিত হয়, তবে সার্ভার রিকোয়েস্টটি প্রত্যাখ্যান করে এবং 403 (Forbidden) স্ট্যাটাস কোড রিটার্ন করে।
উদাহরণ:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult SubmitForm(FormModel model)
{
// ফর্ম ডেটা প্রসেস করা
return View();
}
এখানে, [ValidateAntiForgeryToken]
অ্যাট্রিবিউটটি গ্যারান্টি দেয় যে ফর্ম সাবমিট করার সময় প্রাপ্ত টোকেনটি সার্ভারের দ্বারা যাচাই করা হবে।
[ValidateAntiForgeryToken]
অ্যাট্রিবিউট ব্যবহার করুন, যাতে নিশ্চিত করা যায় যে সঠিক টোকেন রিটার্ন হচ্ছে।Implement Anti-forgery in AJAX Requests: AJAX রিকোয়েস্টের ক্ষেত্রেও Anti-forgery টোকেন ব্যবহার করা উচিত। এটি করার জন্য, টোকেনটি JavaScript মাধ্যমে পাঠানো হয়। এখানে RequestVerificationToken
নামক টোকেনটি হেডারে যোগ করা যায়।
উদাহরণ:
$.ajax({
url: '/your-endpoint',
type: 'POST',
data: { data: 'value' },
headers: { 'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val() },
success: function(response) { /* Handle response */ }
});
Startup.cs
ফাইলে services.AddAntiforgery()
ব্যবহার করে এটি গ্লোবালি সক্ষম করতে পারেন।Anti-forgery Tokens হল একটি গুরুত্বপূর্ণ সিকিউরিটি মেকানিজম, যা CSRF আক্রমণ থেকে ওয়েব অ্যাপ্লিকেশনকে সুরক্ষা প্রদান করে। এটি ব্যবহারকারীর সেশন এবং রিকোয়েস্টের নিরাপত্তা নিশ্চিত করে, যাতে শুধুমাত্র বৈধ রিকোয়েস্টগুলি গ্রহণ করা হয়। Anti-forgery টোকেন ব্যবহার করলে, ওয়েব অ্যাপ্লিকেশন নিরাপদে এবং আক্রমণকারীদের হাত থেকে সুরক্ষিত থাকে।
common.read_more